iT邦幫忙

2024 iThome 鐵人賽

DAY 10
0
Python

一些Python可以做的事系列 第 10

[Python] Selenium 函式庫

  • 分享至 

  • xImage
  •  

selenium 函式庫 ( 模組 ) 是使用 Python 進行網路爬蟲時,必備的函式庫之一,透過 selenium 可以模擬出使用者在瀏覽器的所有操作行為 ( 點擊按鈕、輸入帳號密碼、捲動捲軸...等 ),因此除了爬蟲的應用,也常作為「自動化測試」使用的工具,在網站開發完成後,透過自動化的腳本測試所有功能是否正常。

安裝 selenium 模組:

$pip install selenium

什麼是 Selenium WebDriver ?

WebDriver 是用來執行並操作瀏覽器的 API 介面,每一個瀏覽器都會有各自對應的驅動程式 ( driver ),Selenium 會透過 WebDriver 來直接對瀏覽器進行操作,將所支援的瀏覽器進行自動化作業,就如同真的使用者在操作。

下載 WebDriver

不同的瀏覽器會對應不同的 driver,有幾種常見的 driver (我使用的是 Chrome ):

  • Chrome
  • Firefox
  • Edge

下載 Chrome driver 時請,須下載對應的 Chrome 的版本,之後如果有更新, driver 也必須更新 ( 版本查詢 : 點擊右上角選單「說明 > 關於 Google Chrome」)

最新的版本(下載)

使用 WebDriver 開啟第一個網頁

如果成功打開代表你的設定都是對的!

from selenium import webdriver  # 從 Selenium 庫中導入 webdriver 模塊

# 創建一個新的 Chrome 瀏覽器實例。WebDriver 將使用 ChromeDriver 來控制 Chrome 瀏覽器。
# 如果你的系統已經正確設置了 ChromeDriver 的路徑,那麼可以不傳遞任何參數
driver = webdriver.Chrome()

# 使用 get 方法打開指定的 URL。在這裡,我們打開 Google 的首頁。
driver.get('https://www.google.com')

# 關閉瀏覽器視窗。如果只有一個視窗,則會關閉整個瀏覽器實例。
driver.close()

小提醒 :

在較新的 Selenium 版本中,不再直接將 ChromeDriver 的路徑作為字串傳遞給 webdriver.Chrome() 的建構函數。應該使用 Service 和 Options 類來配置 WebDriver。

不再使用傳PATH (會error)

driver = webdriver.Chrome('C:/Users/Desktop/chromedriver/chromedriver.exe') 

可以使用 Service 去指定PATH

# 從 selenium 模塊中導入必要的類
from selenium import webdriver
from selenium.webdriver.chrome.service import Service

# 創建一個 Service 物件,指定 chromedriver 的路徑
# Service 類允許你指定 ChromeDriver 的位置,這樣 Selenium 就知道從哪裡啟動 ChromeDriver。
service = Service('C:/Users/micke/Desktop/chromedriver/chromedriver.exe')

# 使用 Service 物件創建一個 ChromeDriver 實例
# webdriver.Chrome() 用於啟動 Chrome 瀏覽器。通過指定 service 參數,我們告訴 WebDriver 使用我們創建的 Service 物件。
driver = webdriver.Chrome(service=service)

# 打開指定的網站
# driver.get() 用於導航到指定的 URL,這裡是 Google 的網站,並且使用繁體中文界面。
driver.get('https://www.google.com.tw/?hl=zh_TW')

參考資料
https://steam.oxxostudio.tw/category/python/spider/selenium.html#a4


上一篇
[Python] Beautiful Soup
下一篇
[Python] Selenium 取得和操作網頁元素
系列文
一些Python可以做的事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言